﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EntitiesLayer
{
    /// <summary>
    /// Son quemados.
    /// Modificar el nombre se haria por medio del repositorio. 
    /// </summary>
    public sealed class Permiso :IEntity
    {
        private readonly int idPermiso;

        public int Id
        {
            get { return idPermiso; }
            
        }
        private readonly string nombre;

        public string Nombre
        {
            get { return nombre; }
            
        }
        private readonly string descTransaccion;

        public string DescTransaccion
        {
            get { return descTransaccion; }
            
        }

        public Permiso(int idPermiso, string nombre, string descTransaccion="N/A") {
           

            Validar(nombre);
            Validar(descTransaccion);

            this.idPermiso = idPermiso;
            this.nombre = nombre;
            this.descTransaccion = descTransaccion;
        }

        public Permiso cambiarDescripcion(string descripcion){
            return new Permiso(Id, Nombre, descripcion);
        }

        public Permiso cambiarNombre(string nombre)
        {
            return new Permiso(Id, nombre, DescTransaccion);
        }

        public override int GetHashCode() 
        {
            return Id.GetHashCode();
        }
        public override bool Equals(object obj)
        {  
            if(obj==this)
                return true;

            Permiso obj1= obj as Permiso;

            if(obj1==null)
                return false;

            return this.Id == obj1.Id;
            
        }

        public void Validar(string val){
     
           if ((val == null || val.Equals("")))
                throw new ArgumentNullException();
        
        }

        public override string ToString()
        {
            return Nombre+" : "+DescTransaccion;
               
        }


    }
}
